package com.mis.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseHelper  extends SQLiteOpenHelper {
	
	// Nombre de tu Base de Datos
	private static final String DATABASE_NAME = "BDPROYECTO";
    // Versión de segumiento, en caso de aumentar la versión, se manda a llamar automáticamente la funcion onUpgrade
	private static final int DATABASE_VERSION = 2;
	
	// Scripts para generar el esquema de nuestra Base de Datos
	private static final String DATABASE_CREATE_E = "CREATE TABLE IF NOT EXISTS Estudiante (idEstudiante INTEGER PRIMARY KEY, matricula TEXT, region TEXT, nombre TEXT, email TEXT);";
	private static final String DATABASE_CREATE_M = "CREATE TABLE IF NOT EXISTS Materia (idMateria INTEGER PRIMARY KEY, horario TEXT, nombre TEXT, profesor TEXT, creditos NUMERIC, email TEXT);";
	private static final String DATABASE_CREATE_H = "CREATE TABLE IF NOT EXISTS Horario (idHorario INTEGER PRIMARY KEY, horaInicio time, horaTermino time, diaUno NUMERIC, diaDos NUMERIC);";
	private static final String DATABASE_CREATE_P = "CREATE TABLE IF NOT EXISTS PlanEstudio (idPlanEstudio INTEGER PRIMARY KEY, idTema NUMERIC, idSubtema NUMERIC, idMateria NUMERIC);";
	private static final String DATABASE_CREATE_CT = "CREATE TABLE IF NOT EXISTS CtlgTemas (idTema INTEGER PRIMARY KEY, nombre TEXT);";
	private static final String DATABASE_CREATE_CS = "CREATE TABLE IF NOT EXISTS CtlgSubtemas (idSubtema INTEGER PRIMARY KEY, nombre );";
	// horario TEXT
	
  //Insertando datos 
    
    private static final String INSERTA_DATOS_USUARIO = "INSERT INTO Estudiante (matricula, nombre, region, email) VALUES ('','','XALAPA', '');";
	
    private static final String INSERTA_DATOS1 = "INSERT INTO Materia (horario, nombre, profesor, creditos, email) VALUES ('Lunes a Viernes 9:00 a 12:00 hrs','Sistemas Distribuidos desarrollados en Web II', 'Juan Carlos Pérez Arriaga', 3, 'rcolorado@uv.mx');";
    private static final String INSERTA_DATOS2 = "INSERT INTO Materia (horario, nombre, profesor, creditos, email) VALUES ('Lunes a Viernes 9:00 a 12:00 hrs','Sistemas Empresariales', 'Ma. de Lourdes Hernández Rodríguez', 5, 'rcolorado@uv.mx' );";
    private static final String INSERTA_DATOS3 = "INSERT INTO Materia (horario, nombre, profesor, creditos, email) VALUES ('Lunes a Viernes 9:00 a 12:00 hrs','Seminario de Tesis II', 'Juan Manuel Fernández Peña', 6, 'rcolorado@uv.mx');";

		
	/**
	 * Constructor de la clase
	 * @param context
	 * @param name El nombre de nuestra BD definido por la variable DATABASE_NAME
	 * @param factory
	 * @param version La versión de nuestra BD definido por la variable DATABASE_VERSION
	 */
	public DataBaseHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}
	
	/**
	 * Creamos el esquema de la BD ejecutando consultas previamente definidas
	 */
	
    public void onCreate(SQLiteDatabase db) {
    	db.execSQL(DATABASE_CREATE_E);
    	db.execSQL(DATABASE_CREATE_M);
    	db.execSQL(DATABASE_CREATE_H);
    	db.execSQL(DATABASE_CREATE_P);
    	db.execSQL(DATABASE_CREATE_CT);
    	db.execSQL(DATABASE_CREATE_CS);
    	
    	db.execSQL(INSERTA_DATOS_USUARIO);
    	
    	db.execSQL(INSERTA_DATOS2);
    	db.execSQL(INSERTA_DATOS3);
    	db.execSQL(INSERTA_DATOS1);
    	db.execSQL(INSERTA_DATOS2);
    	db.execSQL(INSERTA_DATOS3);
    	db.execSQL(INSERTA_DATOS1);
    	db.execSQL(INSERTA_DATOS2);
    	db.execSQL(INSERTA_DATOS3);
    	
    	

	}
    
      
    
    
    
    /**
     * Función ejecutada cuando la versión de la BD ha cambiado y se necesita crear un Script de actualización
     */
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		
		/*
		 * Eliminamos todas las tablas y mandamos a llamar a la función para que las vuelva a crear
		 * La función especificada en onUpgrade es relativa a la necesidad de la aplicación
		 * En este caso cuidamos en no eliminar los datos que el usuario haya definido (TABLA EStudiante),
		 * de esta forma, los seguimos manteniendo y evitamos que con cada actualzación el usuario tenga de nuevo que
		 * llenar sus datos
		 */
				
		db.execSQL("DROP TABLE IF EXISTS Estudiante;");
		db.execSQL("DROP TABLE IF EXISTS Materia");
		db.execSQL("DROP TABLE IF EXISTS Horario");
		db.execSQL("DROP TABLE IF EXISTS PlanEstudio");
		db.execSQL("DROP TABLE IF EXISTS CtlgTemas");
        db.execSQL("DROP TABLE IF EXISTS CtlgSubtemas");

        onCreate(db);
		
	}
    
}

